草庐IT

Java HotSpot 枚举开销

全部标签

java - 为什么,当我在 switch 语句中为每个枚举常量设置 case 时,我仍必须提供默认值?

这个问题在这里已经有了答案:Whyisdefaultrequiredforaswitchonanenum?(8个答案)关闭3年前。我试图在Java中声明一个枚举并在switch语句中使用该类型的变量,其中涵盖了该类型枚举常量的所有可能情况。enumMyEnum{FOO,BAR}privatestaticvoidtest(MyEnume){Stringmsg;switch(e){caseFOO:msg="foo";break;caseBAR:msg="bar";break;}System.out.println("Enumis:"+e+"msgis:"+msg);//compilerer

【Rust】——枚举与模式匹配

🎃个人专栏:🐬算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客🐳Java基础:Java基础_IT闫的博客-CSDN博客🐋c语言:c语言_IT闫的博客-CSDN博客🐟MySQL:数据结构_IT闫的博客-CSDN博客🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客💎C++:C++_IT闫的博客-CSDN博客🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​🥏python:python_IT闫的博客-CSDN博客🐠离散数学:离散数学_IT闫的博客-

java - 如何使用 Java 8 流 API 将枚举存储到 map

我有一个enum和另一个enum作为参数publicenumMyEntity{Entity1(EntityType.type1,....MyEntity(EntityTypetype){this.entityType=entityType;}}我想创建一个按类型返回enum的方法publicMyEntitygetEntityTypeInfo(EntityTypeentityType){returnlookup.get(entityType);}通常我会写privatestaticfinalMaplookup=newHashMap();static{for(MyEntityd:MyEnt

java - java 枚举上的自定义字段未被序列化

我有一个Java枚举,如下所示:publicenumExecutionMode{TYPE_A,TYPE_B,TYPE_C;privateExecutionMode(){}//noargsconstr-noreallyrequiredprivatebooleanincremental;//hasget/setprivateStringsomeStr;//hasget/set}我看到反序列化后,枚举上的自定义字段丢失了。在阅读更多有关它的信息后,我得到的印象是枚举被反序列化为一个字符串,因此它的自定义字段被忽略了。如果它是真的,我是不是在滥用Enum并且应该只使用POJOistead?或者

java - 在 Java 中完全切换枚举会产生 "Missing return statement"错误

假设,我们有switch语句,它完全涵盖了枚举参数的所有可能情况,并且也有null检查,不会因为"Missingreturnstatement"而被编译。enumFoo{ONE,TWO}intfooToInt(Foofoo){if(foo==null){thrownewNullPointerException();}switch(foo){caseONE:return1;caseTWO:return2;}}我知道,从default案例或枚举之后抛出异常,或者访问枚举元素而不是switch将解决问题。但我不明白这种行为的技术原因:显然,没有可能的执行分支不会导致return或throw。

java - 使用 Java 8 枚举 K 元素的组合

给定一个List的实例,使用Java8特性,如何构建List>枚举原始List的k个元素所有可能的组合? 最佳答案 这是我为解决一些欧拉计划问题而编写的算法:publicstaticStream>combinations(Listl,intsize){if(size==0){returnStream.of(Collections.emptyList());}else{returnIntStream.range(0,l.size()).boxed().>flatMap(i->combinations(l.subList(i+1,l.s

java - Java 中枚举值的“子集”

我有一个Java类,其形式如下:-publicclassAngle{ANGLE_TYPEangleType;ANGLE_TYPEdefaultAngleType=ANGLE_TYPE.RAD;enumANGLE_TYPE{DEG,RAD,DEGMIN,DEGMINSEC;}}可以看出,该类定义了一个“枚举”。我的问题是关于实例变量“defaultAngleType”。我希望情况如此,以便只能为该变量分配值RAD或DEG,否则抛出错误。知道如何实现吗? 最佳答案 您可以使用EnumSet.例如:Setallowed=EnumSet.o

java - Apache POI 超出了 GC 开销限制

我有13个.xlsx文件,每个文件大约有1000行。现在我想用一张纸将它合并到一个.xlsx文件中。我正在使用这里的代码https://blog.sodhanalibrary.com/2014/11/merge-excel-files-using-java.html#.Vi9ns36rSUk.这是我的代码(几处改动,addSheet方法不变)try{FileInputStreamexcellFile1=newFileInputStream(newFile("tmp_testOut1000.xlsx"));XSSFWorkbookworkbook1=newXSSFWorkbook(exc

java - 如何在枚举中添加特殊字符?

我这里有个问题。我创建了SpecialCharacterField.java-一个枚举类,它将列出一些特殊字符。SpecialCharacterField.javapackagebp.enumfield;publicenumSpecialCharacterField{+,#;}在我的eclipse上:publicenumSpecialCharacterField{有一个错误,它说:Syntaxerror,insert"EnumBody"tocompleteEnumDeclaration请帮忙。提前致谢。 最佳答案 做这样的事情,pu

java - Protocol Buffer 和枚举组合?

这是我的原型(prototype)文件:messageMSG{requiredMsgCodesMsgCode=1;optionalint64Serial=2;//UniqueIDnumberforthisperson.requiredint32From=3;requiredint32To=4;//blabla...enumMsgCodes{MSG=1;FILE=2;APPROVE=4;ACK=8;ERROR_SENDING=16;WORLD=32;}}在我的C#中,我正在尝试:msg=msg.ToBuilder().SetMsgCode(msg.MsgCode|MSG.Types.Ms